/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package srac.controleatividades.cih;

import java.util.ArrayList;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlAtividade;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.AtividadeComplementar;
import srac.controleatividades.cdp.StatusAtividadeComplementar;
import srac.controleatividades.cdp.StatusSubmissao;
import srac.controleatividades.cgt.ClassificadorAtividades;

/**
 *
 * @author gmiranda
 */
public class PagConfirmarSubmissao extends GenericForwardComposer{
    private CtrlAtividade ctrlAtividade = CtrlAtividade.getInstance();
    private Window winConfirmarSubmissao;
    private Listbox list;
    private Label totalPontos;
    private Label totalSubmetidos;
    private Div submetidosAnteriormente;
    private Div boxInformacao;
    private Button confirmar;
    private Label msg;
    private ArrayList<AtividadeComplementar> atividades;
    private List<ClassificadorAtividades> classificadores;
    private Aluno obj;
    
    

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        atividades = (ArrayList<AtividadeComplementar>) arg.get("atividades");
        obj = (Aluno) arg.get("obj");
        ctrlAtividade.setPagConfirmarSubmissao(this); 

       
        
        classificadores = ctrlAtividade.obterTotaldeClassificadores(atividades);
        Integer soma = 0, soma2 = 0;
        
        if (classificadores != null) {
            if(obj.getStatusSubmissao().equals(StatusSubmissao.ATIVIDADES_PENDENTES))
            {
                submetidosAnteriormente.setVisible(false);
                for (int i = 0; i < classificadores.size(); i++) {
                    ClassificadorAtividades c = classificadores.get(i);
                    Listitem linha = new Listitem(c.getCategoria().toString(), c);

                    linha.appendChild(new Listcell(c.getAtividades().toString()));
                    

                    if(c.getQuantidade()>10)
                    {
                        soma+= 10;
                        linha.appendChild(new Listcell("10")); 
                    }
                    else
                    {
                        soma += c.getQuantidade();
                        linha.appendChild(new Listcell(c.getQuantidade().toString())); 
                    }
                    linha.appendChild(new Listcell("0")); 
                    
                    linha.setParent(list);

               }
                totalPontos.setValue(soma.toString());
                if(soma>=15)
                {
                    totalPontos.setStyle("font-weight:bold;font-size:12pt;color:green");
                    setMensagemAviso("success", "Foram atingidos os pontos necessários para a submissão!");
                    confirmar.setDisabled(false);
                }
                else
                {
                    totalPontos.setStyle("font-weight:bold;font-size:12pt;color:red");
                    setMensagemAviso("error", "Não foram atingidos os 15 pontos mínimos com as atividades selecionadas!");
                    confirmar.setDisabled(true);
                }
                
            }
            else
            {
                submetidosAnteriormente.setVisible(true);
                List<ClassificadorAtividades> atividadesAnteriores = ctrlAtividade.obterTotaldePontosCategoria(obj, StatusAtividadeComplementar.SUBMETIDA);
                for (int i = 0; i < classificadores.size(); i++) {
                    ClassificadorAtividades c = classificadores.get(i);
                    Listitem linha = new Listitem(c.getCategoria().toString(), c);
                    

                    linha.appendChild(new Listcell(c.getAtividades().toString()));
                    linha.appendChild(new Listcell(c.getQuantidade().toString()));
                    
                    soma += c.getQuantidade();
                    
                    boolean b = false;
                    for (ClassificadorAtividades antigos : atividadesAnteriores) {
                        if(antigos.getCategoria().equals(classificadores.get(i).getCategoria()))
                        {
                            linha.appendChild(new Listcell(antigos.getQuantidade().toString())); 
                            b = true;
                            break;
                        }
                    }
                    if(!b)
                    {
                        linha.appendChild(new Listcell("0")); 
                    }
                    
                    linha.setParent(list);

               }
                totalPontos.setValue(soma.toString());
              
                totalPontos.setStyle("font-weight:bold;font-size:12pt;color:green");
                
                for (ClassificadorAtividades antigos : atividadesAnteriores) {
                    soma2 += antigos.getQuantidade();
                }
                
                totalSubmetidos.setValue(soma2.toString());
              
                totalSubmetidos.setStyle("font-weight:bold;font-size:12pt;color:green");

               
                    
                
            }
        }
    }

    public void onCreate$winFormularioSubmissao() {

        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null) {
            Executions.sendRedirect("/");
            winConfirmarSubmissao.detach();
        }
    }

    public void onClick$voltar(Event event) {
        winConfirmarSubmissao.onClose();
    }

    public void onClick$confirmar(Event event) {
        
        int r = ctrlAtividade.verificarSubmissao(atividades); //Verifica se pode haver a submissao

        if (r < 2) { //Se for possivel submeter
            ctrlAtividade.submeterAtividades(atividades); //Submete as atividades
            ctrlAtividade.mudarStatus(obj, StatusSubmissao.EM_ANALISE); //Muda o status do aluno
            winConfirmarSubmissao.onClose();
            
            
            if (r == 0) {
            ctrlAtividade.getPagEventosAtividade().setMensagemAviso("success", "Atividades submetidas com sucesso! Algumas atividades atingiram o limite de 10 pontos na categoria!");
            }
            else{
                ctrlAtividade.getPagEventosAtividade().setMensagemAviso("success", "Atividades submetidas com sucesso!");
            }
            ctrlAtividade.refreshAtividades(ctrlAtividade.obterAtividadesComplementares(obj));
        } 
    }

    
    public void setMensagemAviso(String tipo, String mensagem) {
        boxInformacao.setClass(tipo);
        boxInformacao.setVisible(true);
        msg.setValue(mensagem);
    }

    public void onClick$boxInformacao(Event event) {
        boxInformacao.setVisible(false);
    }
    
    
}
